// import 'dart:math';
//
// import 'package:flutter/material.dart';
// import 'package:get/get.dart';
//
// import '../../common/model/device_model/device_model.dart';
//
// enum HomeUpdateKey { tabs, empty }
//
// class HomeLogic extends GetxController with GetTickerProviderStateMixin {
//   late var tabController = TabController(length: tabs.length, vsync: this);
//
//
//   var tabs = <String>[].obs;
//
//   var isEmpty = true;
//
//   late Worker worker;
//
//   @override
//   void onInit() {
//     super.onInit();
//     worker = ever(devicesManager.roomDevices, (Map<String, List> data) {
//       final newTabs = data.keys.toSet();
//       //比对新旧tabs是否一致
//       if (newTabs.length == tabs.length &&
//           newTabs.every((e) => tabs.toSet().contains(e))) {
//         return;
//       }
//       tabs.value = data.keys.toList();
//       isEmpty = data.values.fold([], (e, r) => e..add(r)).isEmpty;
//       resetTabController();
//     });
//
//     loadDevice();
//   }
//
//   @override
//   void onClose() {
//     worker.dispose();
//     tabController.dispose();
//     super.onClose();
//   }
//
//   Future<void> loadDevice() async {
//     await devicesManager.reloadDevices();
//   }
//
//   void reattachTabController() {
//     tabController.dispose();
//     tabController = TabController(length: tabs.length, vsync: this);
//   }
//
//   void resetTabController() {
//     var selectTab = tabs.isEmpty ? "" : tabs[tabController.index];
//     reattachTabController();
//     var selectIndex = tabs.indexOf(selectTab);
//     tabController.index = max(selectIndex, 0);
//     update([HomeUpdateKey.tabs, HomeUpdateKey.empty]);
//   }
// }
